Completed
Pull Request — master (#6)
by Janis
340:04 queued 336:33
created

ocrocr.js ➔ Ocr   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 5
rs 9.4285
c 1
b 0
f 0
cc 1
nc 1
nop 1
1
/**
2
 * nextCloud - ocr
3
 *
4
 * This file is licensed under the Affero General Public License version 3 or
5
 * later. See the COPYING file.
6
 *
7
 * @author Janis Koehr <[email protected]>
8
 * @copyright Janis Koehr 2016
9
 */
10
(function() {
11
12
	var OCR_ALLOWED_MIMETYPES = ['application/pdf', 'image/png', 'image/jpeg', 'image/tiff'];
13
14
	/**
15
	 * Constructor of the ocr object.
16
	 * This object holds all our ocr stuff.
17
	 * processing state, available languages, etc.
18
	 * @param baseUrl
19
	 * @constructor
20
	 */
21
	var Ocr = function (baseUrl) {
22
		this._baseUrl = baseUrl;
23
		this._languages = [];
24
		this._status = [];
25
	};
26
27
	/**
28
	 * Class prototype for Ocr. Following functions are available:
29
	 */
30
	Ocr.prototype = {
31
		getLanguages: function () {
32
			var self = this;
33
			return self._languages;
34
		},
35
		getStatus: function () {
36
			var self = this;
37
			return self._status;
38
		},
39
		/**
40
		 * AJAX call.
41
		 * Loads all available languages.
42
		 * @returns $.Deferred()
43
		 */
44
		loadAllLanguages: function () {
45
			var deferred = $.Deferred();
46
			var self = this;
47
			$.get(self._baseUrl).done(function (languages) {
48
				self._languages = languages;
49
				deferred.resolve(languages);
50
			}).fail(function (jqXHR) {
51
				deferred.reject(jqXHR.responseText);
52
			});
53
			return deferred.promise();
54
		},
55
		process: function(selectedFiles, selectedLanguage){
56
			var self = this;
57
			var deferred = $.Deferred();
58
			if(self.checkMimeTypes(selectedFiles)){
59
				var data = {language: selectedLanguage, files: selectedFiles};
60
				$.ajax({
61
					url: self._baseUrl,
62
					method: 'POST',
63
					contentType: 'application/json',
64
					data: JSON.stringify(data)
65
				}).done(function () {
66
					deferred.resolve();
67
				}).fail(function (jqXHR) {
68
					deferred.reject(jqXHR.responseText);
69
				});
70
			}else{
71
				deferred.reject('Files have wrong mimetypes.');
72
			}
73
			return deferred.promise();
74
		},
75
		checkStatus: function () {
76
			var deferred = $.Deferred();
77
			var self = this;
78
			$.get(OC.generateUrl('/apps/ocr/status')).done(function (status) {
0 ignored issues
show
Bug introduced by
The variable OC seems to be never declared. If this is a global, consider adding a /** global: OC */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
79
				self._status = status;
80
				deferred.resolve(status);
81
			}).fail(function (jqXHR) {
82
				deferred.reject(jqXHR.responseText);
83
			});
84
			return deferred.promise();
85
		},
86
		checkMimeTypes: function (selectedFiles) {
87
			var correct = true;
88
			selectedFiles.forEach(function(file, index, array){
0 ignored issues
show
Unused Code introduced by
The parameter array is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Unused Code introduced by
The parameter index is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
89
				if(file.type != 'file' || $.inArray(file.mimetype, OCR_ALLOWED_MIMETYPES) == -1){
90
					correct = false;
91
				}
92
			});
93
			return correct;
94
		},
95
		initialize: function () {
96
			var self = this;
97
			var deferred = $.Deferred();
98
			self.loadAllLanguages().done(function(){
99
				deferred.resolve();
100
			}).fail(function(message){
101
				deferred.reject(message);
102
			});
103
			return deferred.promise();
104
		}
105
	};
106
	/** global: OCA */
107
	if (OCA.Ocr) {
108
		OCA.Ocr.Ocr = Ocr;
109
	}
110
})();